﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//vs的调试技巧
//当我们发现程序中存在的问题的时候，那下⼀步就是找到问题，并修复问题。
//这个找问题的过程叫称为调试，英⽂叫debug（消灭bug）的意思。
//调试⼀个程序，⾸先是承认出现了问题，然后通过各种⼿段去定位问题的位置，可能是逐过程的调
//试，也可能是隔离和屏蔽代码的⽅式，找到问题所的位置，然后确定错误产⽣的原因，再修复代码，
//重新测试。
//调试其实就是当程序已经出现问题的时候，去找问题的过程，调试是一个动作



//Debug 通常称为调试版本，它包含调试信息，并且不作任何优化，便于程序员调试程序；
//程序员在写代码的时候，需要经常性的调试代码，就将这⾥设置为 debug ，这样编译产⽣的是
//debug 版本的可执⾏程序，其中包含调试信息，是可以直接调试的。

//Release 称为发布版本，它往往是进⾏了各种优化，使得程序在代码⼤⼩和运⾏速度上都是最优的，
//以便⽤⼾很好地使⽤。当程序员写完代码，测试再对程序进⾏测试，直到程序的质量符合交付给⽤⼾
//使⽤的标准，这个时候就会设置为 release ，编译产⽣的就是 release 版本的可执⾏程序，这个
//版本是⽤⼾使⽤的，⽆需包含调试信息等。

//对⽐可以看到从同⼀段代码，编译⽣成的可执⾏⽂件的⼤⼩，release版本明显要⼩，⽽debug版本明
//显⼤。

//调试最常使⽤的⼏个快捷键：
//F9：创建断点和取消断点
//断点的作⽤是可以在程序的任意位置设置断点，打上断点就可以使得程序执⾏到想要的位置暂停执
//⾏，接下来我们就可以使⽤F10，F11这些快捷键，观察代码的执⾏细节。
//条件断点：满⾜这个条件，才触发断点
//F5：启动调试，经常⽤来直接跳到下⼀个断点处，⼀般是 和F9配合使⽤。
//F10：逐过程，通常⽤来处理⼀个过程，⼀个过程可以是⼀次函数调⽤，或者是⼀条语句。
//F11：逐语句，就是每次都执⾏⼀条语句，但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。在函
//数调⽤的地⽅，想进⼊函数观察细节，必须使⽤F11，如果使⽤F10，直接完成函数调⽤。
//CTRL + F5：开始执⾏不调试，如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。
//我我们写代码的时候用debug版本
//发布给用户的时候用release版本 测试人员测试的也是release版本
//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	//给数组元素赋值
//	for (i = 0; i < 10; i++)
//	{
//		//arr[i] = i + 1;
//		scanf("%d", &arr[i]);  //如果这个地方有和用户交互，就不能f5直接跳到下一个断点
//		//必须输入值才能 跳到下一个断点处
//	}
//
//	//打印数组的内容
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]); //debug版本可以f10调试
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	//给数组元素赋值
//	for (i = 0; i < 10; i++)
//	{
//		arr[i] = i + 1;  //刚开始我按f5来到这个，我再按f5，因为是循环
//		//所以还是会在这，只到循环结束，才到73行那个断点
//		// f5是让程序执行到（运行逻辑上的）下一个断点处，而不是物理上的下一个断点处
//		//scanf("%d", &arr[i]);  //如果这个地方有和用户交互，就不能f5直接跳到下一个断点
//		//必须输入值才能 跳到下一个断点处
//		//那假如在循环5次才有bug，我应该怎么样快速跳到这里呢
//		//我可以设置断点的条件在i==5的时候 这样就可以直接跳到i=5的时候才有断点
//	}
//
//	//打印数组的内容
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]); //debug版本可以f10调试
//	}
//	return 0;
//}

//void test()
//{
//	printf("test\n");
//	int n = 4 + 5;
//	printf("%d\n", n);
//}
//
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int c = a + b;
//	test(); //f10会直接调用函数，不会在函数里面一步一步再走 （过程一个一个执行）
//	//f11会进入函数内部，其他和f10一样（语句一句一句）细一点
//	printf("hehe\n");
//	return 0;
//}

int main()
{
	int arr[10] = { 0 };
	int num = 100;
	char c = 'w';  //调试-窗口-监视  就能输入你想监视的对象了
	//调试-窗口-内存  内存里的值是以16进制展示  左边是地址  中间是值 右边是试图把值解析
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		arr[i] = i;

	}
	return 0;
}